package com.hmall.mapper;

import com.hmall.model.MallProduct;
import com.hmall.util.MyMapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

@Repository
public interface MallProductMapper extends MyMapper<MallProduct> {

    //根据产品id查询生成订单的对象
    Map<String,Object> selectByProductIdQuk(@Param("productId") Integer productId);
    Integer selectShopIdByProductId(@Param("productId") Integer productId);
    List<MallProduct> selectList();

    List<MallProduct> selectList2();

    List<MallProduct> selectByNameAndProductId(@Param("productName") String productName, @Param("productId") Integer productId);

    List<MallProduct> selectByNameAndCategoryIds(@Param("productName") String productName, @Param("categoryIdList") List<Integer> categoryIdList);

    Integer findByProductName(@Param("productName") String productName);

    List<MallProduct> listHotProduct(@Param("cout") int cout);

    MallProduct selectByProductId(@Param("productId") int productId);

    int selectCategoryByProductId(@Param("productId") int productId);

    List<MallProduct> selectProductByCategoryIdAndHot(@Param("categoryId") int categoryId, @Param("categoryComNum") int categoryComNum);

    List<MallProduct> listProductByType(@Param("categoryId") String categoryId);


    List<String> listFinenessAndPoreNum(@Param("typeId") String typeId, @Param("fineId") String fineId, @Param("glossId") String gloss, @Param("gradeId") String grade);




    List<String> listGloss(@Param("typeName") String typeName, @Param("shopId") Integer shopId);


    List<String> listType(@Param("shopId") Integer shopId);


    List<String> listFineAndPore(@Param("typeName") String typeName, @Param("shopId") Integer shopId);


    BigDecimal getPirce(@Param("productId") Integer productId);

    int getStock(@Param("productId") Integer productId);

    List<MallProduct> listHotPush(@Param("hotCount") int hotCount);

    List<MallProduct> listSimilarPush(@Param("similarCount") int similarCount);

    List<Integer> listProductIdByType(@Param("typeName") String typeName, @Param("shopId") Integer shopId);

    //分页总数
    Integer selectCountData(@Param("typeName") String typeName, @Param("fineName") String fineName, @Param("poreName") String poreName,
                            @Param("glossName") String glossName, @Param("gradeName") String gradeName, @Param("singleShareName") String singleShareName, @Param("sectionName") String sectionName,
                            @Param("colorName") String colorName, @Param("twistName") String twistName, @Param("networkName") String networkName, @Param("shopId") Integer shopId,
                            @Param("type") Integer type);

    //分页
    List<Map<String,Object>> selectByPage(@Param("typeName") String typeName, @Param("fineName") String fineName, @Param("poreName") String poreName,
                                          @Param("glossName") String glossName, @Param("gradeName") String gradeName, @Param("singleShareName") String singleShareName, @Param("sectionName") String sectionName,
                                          @Param("colorName") String colorName, @Param("twistName") String twistName, @Param("networkName") String networkName, @Param("shopId") Integer shopId,
                                          @Param("pageStart") Integer pageStart, @Param("pageSize") Integer pageSize,
                                          @Param("type") Integer type);

    List<MallProduct> listUserLike(@Param("pageStart") int pageStart, @Param("pageSize") int pageSize);

    int listUserLikeCount();


    List<MallProduct> selectProductList(@Param("productIdList") List<Integer> productIdList);

    //返回图文介绍
    String selectContentById(@Param("productId") Integer productId);
    //通过id查询型号
    String  selectModelByProductId(@Param("productId") Integer productId);

    List<MallProduct> selectByShopId(@Param("shopId") Integer shopId);

    String selectValueByProductId(@Param("productId") Integer productId);

    String selectValueByOrderItemId(@Param("orderItemId") Integer orderItemId);

    List<Integer> listAllProductId();

    List<MallProduct> selectLimit3(@Param("shopId") Integer shopId);

    List<String> listSingleShare(@Param("typeName") String typeName, @Param("shopId") Integer shopId);

    List<String> listSection(@Param("typeName") String typeName, @Param("shopId") Integer shopId);

    List<String> listColorList(@Param("typeName") String typeName, @Param("shopId") Integer shopId);

    List<String> listNetworkList(@Param("typeName") String typeName, @Param("shopId") Integer shopId);

    List<String> listTwist(@Param("typeName") String typeName, @Param("shopId") Integer shopId);

    List<String> selectNameByProductIdList(@Param("productIdList") List<Integer> productIdList);

    String selectNameByProductId(@Param("productId") int productId);

    List<Integer> selectAllNewProductId();

    int selectTotal();

    List<MallProduct> selectSomeProduct(@Param("start") int readPageNum, @Param("end") int i);

    MallProduct selectByModel(@Param("model") String model);

    List<MallProduct> selectAllByModel(@Param("model") String model);

    MallProduct selectByModelAndTwisting(@Param("model") String arg, @Param("twisting") String arg1);

    List<MallProduct> selectByModelTwistingAndGrade(@Param("model") String model, @Param("twisting") String twisting, @Param("grade") String grade);

    Integer selectMaxOrMinId(@Param("type") String type);

    List<MallProduct> selectWithoutOtherGrade();

    Integer selectMin();
}